#include <stdio.h>
#include <string.h>
#include <assert.h>

int my_strlen(const char * str){ //增加const，传入的字符串不可修改
    int count = 0;
    assert(str != NULL); // 增加判断
    while(*str != '\0'){
        count++;
        str++;
    }
    return count;
}

int main() 
{
    char arr[] = "hello";
    char arrEx[] = "zrh";
    // 计算字符串长度，到 /0 为止
    printf("arr = %d \n", strlen(arr)); // 输出5
    printf("arr = %d \n", my_strlen(arr));
    char arr_char[] = {'h','e','l','l','o'} ;   
    printf("arr_char = %d \n", strlen(arr));  // 输出5 ，但实际上应该到 \0 结束，与编译器有关
    printf("arr_char = %d \n", my_strlen(arr));

    printf("%d \n", (strlen(arrEx) - strlen(arr))); // 输出-2
    if ((strlen(arrEx) - strlen(arr)) < 0)
    {
        printf("over < 0 \n");
    }else { // 重点：：：但是判断走的这里，是因为 strlen的返回值是 unsigned int类型
        printf("over > 0 \n");
    }
    printf("arr_char = %d \n", my_strlen(NULL)); // 报错 Assertion failed: str != NULL, file .\test_strlen.c, line 7
    return 0; // 返回 0
}
